home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok55 / m2midi / midisupport.mod < prev    next >
Text File  |  1993-11-04  |  2KB  |  68 lines

  1. (***************************************************************************
  2.   :Program.       MidiSupport.mod
  3.   :Author.        Jürgen Zimmermann
  4.   :Address.       Ringstraße 6, 6719 Altleiningen, West-Germany
  5.   :Phone.         06356/1456
  6.   :ShortCut.      [JnZ]
  7.   :Support.       -
  8.   :Version.       1.1
  9.   :Date.          8. May 1991
  10.   :Copyright.     PD
  11.   :Language.      MODULA-II
  12.   :Translator.    M2Amiga 4.0d
  13.   :Contents.      Eine Modulimplementation der "Midi-Marcos" (C!) für
  14.   :Contents.      Modula-2 User
  15.   :Remark.        Ich würde mich sehr über Kontakt mit anderen M2Amiga-Usern
  16.   :Remark.        und MIDI-Freaks freuen.
  17.   :Usage.         Siehe Anleitung für die Midi-Library (anbei!)
  18. ****************************************************************************)
  19.  
  20. IMPLEMENTATION MODULE MidiSupport;
  21.  
  22.  
  23. PROCEDURE MidiHiByte(data: CARDINAL): SHORTCARD;
  24.    (* pack high bytes of a word into midi format (7/14 bit math) *)
  25.  
  26.    BEGIN
  27.       RETURN (SHORTCARD(data DIV 128));
  28.    END MidiHiByte;
  29.  
  30.  
  31. PROCEDURE MidiLoByte(data: CARDINAL): SHORTCARD;
  32.    (* pack low bytes of a word into midi format (7/14 bit math) *)
  33.  
  34.    BEGIN
  35.       RETURN (SHORTCARD(data MOD 128));
  36.    END MidiLoByte;
  37.  
  38.  
  39. PROCEDURE MidiWord(hi, lo: SHORTCARD): CARDINAL;
  40.    (* unpack 2 midi bytes into a word (7/14 bit math) *)
  41.  
  42.    BEGIN
  43.       RETURN (CARDINAL(CARDINAL(hi)*128+CARDINAL(lo)));
  44.    END MidiWord;
  45.  
  46.  
  47. PROCEDURE SplitMidiID(id: LONGCARD;
  48.                       VAR id0,id1,id2: SHORTCARD);
  49.    (* unpack a 3 byte sys/ex id into single bytes for argument
  50.       lists and RIMatch initializers *)
  51.  
  52.    BEGIN
  53.       id0:=(SHORTCARD(id DIV 65536));
  54.       id1:=(SHORTCARD((id DIV 256) MOD 256));
  55.       id2:=(SHORTCARD(id MOD 256));
  56.    END SplitMidiID;
  57.  
  58.  
  59. PROCEDURE MakeMidiID(id0,id1,id2: SHORTCARD): LONGCARD;
  60.     (* make a 3 byte sys/ex id from three single bytes *)
  61.  
  62.    BEGIN
  63.       RETURN ((LONGCARD(id0)*65536)
  64.               + (LONGCARD(id1)*256)
  65.               + LONGCARD(id2));
  66.    END MakeMidiID;
  67. END MidiSupport.
  68.